unit uRapCommon;

interface

  uses SysUtils, TypInfo;

type

  TGrupy = (Region, TypDok, Handlowiec, Sprzedawca, Magazyn,
    Klient, Odbiorca,
    KlNazwa, KlAdres, KlMiasto, KlTelefon1, KlTelefon2, KlFax, KlNip, KlKontakt,
    KTM, Opis, MarkaT, GrupaT,
    Faktura, DataFaktury, ZamKlienta,
    Dostawca, PM,  Wysylka,
    TypKl, KlasaKl, GrupaKl     );

  TRaprortCommon = class
  protected
    nieOgranicz : array[TGrupy] of boolean;
    ogranicz : array[TGrupy] of boolean;
    grupuj : array[TGrupy] of boolean;
    textOgranicz : array[TGrupy] of string;

    Dzial_IT : boolean;
    Dzial_IL : boolean;
    FDostepDoZakupu : boolean;
    FUsunSpacje : boolean;
    OdDnia : string;
    DoDnia : string;

    function _GetTyp(typ: string): TGrupy;
    function _GetPole(typ: TGrupy): string;
    function _GetPoleTrim(typ: TGrupy): string;
    function _GetNazwa(typ: TGrupy): string;
    function _GetLista(s: string): string;
  public
    constructor Create;
    procedure SetOgraniczenia(typ: string; value: boolean);
    procedure SetNieOgraniczenia(typ: string; value: boolean);
    procedure SetGrupuj(typ: string; value: boolean);
    procedure SetTextOgraniczenia(typ: string; value: string);
    procedure SetDzialIT(value: boolean);
    procedure SetDzialIL(value: boolean);
    procedure SetOdDnia(T : TDateTime);
    procedure SetDoDnia(T : TDateTime);
    procedure SetUsunSpacje(Value: boolean);
    procedure SetZakup(value: boolean);
    
  end;

implementation

{ TRaprortCommon }
uses Wilk;


constructor TRaprortCommon.Create;
var
  i : TGrupy;
begin
  inherited;
  for i := low(TGrupy) to high(TGrupy) do begin
    grupuj[i] := false;
    nieOgranicz[i] := false;
    ogranicz[i] := false;
  end;
  FDostepDoZakupu := false;
  FUsunSpacje := true;
end;

procedure TRaprortCommon.SetDoDnia(T: TDateTime);
begin
  DoDnia := wilk.DataSqlK(T);
end;

procedure TRaprortCommon.SetDzialIL(value: boolean);
begin
  Dzial_IL := value;
end;

procedure TRaprortCommon.SetDzialIT(value: boolean);
begin
  Dzial_IT := value;
end;

procedure TRaprortCommon.SetGrupuj(typ: string; value: boolean);
begin
  grupuj[_GetTyp(typ)] := value;
  if typ='KTM' then
    grupuj[Opis] := value;
end;

procedure TRaprortCommon.SetNieOgraniczenia(typ: string; value: boolean);
begin
  nieOgranicz[_GetTyp(typ)] := value;
end;

procedure TRaprortCommon.SetOdDnia(T: TDateTime);
begin
  OdDnia := wilk.DataSqlK(T);
end;

procedure TRaprortCommon.SetOgraniczenia(typ: string; value: boolean);
begin
  ogranicz[_GetTyp(typ)] := value;
end;

procedure TRaprortCommon.SetTextOgraniczenia(typ, value: string);
begin
  textOgranicz[_GetTyp(typ)] := value;
end;

procedure TRaprortCommon.SetUsunSpacje(Value: boolean);
begin
  FUsunSpacje := Value;
end;

procedure TRaprortCommon.SetZakup(value: boolean);
begin
  FDostepDoZakupu := value;
end;

function TRaprortCommon._GetLista(s: string): string;
begin
  result := ''''+wilk.StrReplace(trim(s), ',', ''',''')+'''';
end;

function TRaprortCommon._GetNazwa(typ: TGrupy): string;
begin
  case typ of
    Region : result := 'Region';
    TypDok : result := 'TypDokumentu';
    Handlowiec : result := 'Handlowiec';
    Sprzedawca : result := 'Sprzedawca';
    Magazyn : result := 'Magazyn';
    Klient : result := 'Klient';
    Odbiorca : result := 'Odbiorca';
    KTM : result := 'KTM';
    Opis : result := 'Opis';
    MarkaT : result := 'Marka';
    GrupaT : result := 'Grupa';
    Dostawca : result := 'Dostawca';
    PM : result := 'PM';
    Wysylka : result := 'Wysylka';
    TypKl : result := 'TypKlienta';
    KlasaKl : result := 'KlasaKlienta';
    GrupaKl : result := 'GrupaKlienta';
    Faktura : result := 'Faktura';
    DataFaktury : result := 'DataFakt';
    ZamKlienta : result := 'ZamowienieKlienta';
    KlNazwa : result := 'Nazwa';
    KlAdres : result := 'Adres';
    KlMiasto : result := 'Miasto';
    KlTelefon1 : result := 'Telefon1';
    KlTelefon2 : result := 'Telefon2';
    KlFax : result := 'Fax';
    KlNip : result := 'NIP';
    KlKontakt : result := 'Kontakt';
  end;
end;

function TRaprortCommon._GetPole(typ: TGrupy): string;
begin
  case typ of
    Region : result := 'Region';
    TypDok : result := 'SUBSTRING(Nrdok,1,5)';
    Handlowiec : result := 'Handlowiec';
    Sprzedawca : result := 'Sprzedawca';
    Magazyn : result := 'Magazyn';
    Klient : result := 'Klient';
    Odbiorca : result := 'Odbiorca';
    KTM : result := 'KTM';
    Opis : result := 'Opis';
    MarkaT : result := 'SUBSTRING(KTM, 1,3)';
    GrupaT : result := 'SUBSTRING(KTM, 4,3)';
    Dostawca : result := 'Dostawca';
    PM : result := 'PM';
    Wysylka : result := 'SposobWysylki';
    TypKl : result := 'TypKlienta';
    KlasaKl : result := 'CUSTCLAS';
    GrupaKl : result := 'ABCD';
    Faktura : result := 'NrDok';
    DataFaktury : result := 'DataDok';
    ZamKlienta : result := 'ZamKlienta';
    KlNazwa : result := 'Nazwa';
    KlAdres : result := 'Adres';
    KlMiasto : result := 'Miasto';
    KlTelefon1 : result := 'Telefon1';
    KlTelefon2 : result := 'Telefon2';
    KlFax : result := 'Fax';
    KlNip : result := 'NIP';
    KlKontakt : result := 'OsobaKontaktowa';
  end;
end;

function TRaprortCommon._GetPoleTrim(typ: TGrupy): string;
begin
  if FUsunSpacje and (typ<>DataFaktury) then
    result := 'rtrim('+_GetPole(typ)+')'
  else
    result := _GetPole(typ);
end;

function TRaprortCommon._GetTyp(typ: string): TGrupy;
begin
  result := TGrupy(GetEnumValue(TypeInfo(TGrupy),typ));
end;

end.
